package com.raitcon.hibernate.backbean;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
import com.raitcon.hibernate.bean.Alumno;
import com.raitcon.hibernate.bean.GradoSeccion;
import com.raitcon.hibernate.bean.Seccion;
import com.raitcon.hibernate.db.AlumnoDB;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import java.util.Map;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import org.hibernate.HibernateException;

/**
 *
 * @author Mike
 */
@ManagedBean(name = "alumnoBean")
@ViewScoped
public class AlumnoBean implements Serializable {

    private static final long serialVersionUID = -2377612760546575078L;
    private Integer idAlumno;
    private String dni;
    private String nombres;
    private String apellidoPaterno;
    private String apellidoMaterno;
    private GradoSeccion gradoSeccion;
    private String direccion;
    private Date fechaNacimiento;
    private Character sexo;
    private String codAlumno;
    private String apellido;
    private String nombre;
    private Seccion seccion;
    private String codigo;
    private List<Alumno> lisAlumno = null;
    private String mensaje;

    public Integer getIdAlumno() {
        return idAlumno;
    }

    public void setIdAlumno(Integer idAlumno) {
        this.idAlumno = idAlumno;
    }

    public String getDni() {
        return dni;
    }

    public void setDni(String dni) {
        this.dni = dni;
    }

    public String getNombres() {
        return nombres;
    }

    public void setNombres(String nombres) {
        this.nombres = nombres;
    }

    public String getApellidoPaterno() {
        return apellidoPaterno;
    }

    public void setApellidoPaterno(String apellidoPaterno) {
        this.apellidoPaterno = apellidoPaterno;
    }

    public String getApellidoMaterno() {
        return apellidoMaterno;
    }

    public void setApellidoMaterno(String apellidoMaterno) {
        this.apellidoMaterno = apellidoMaterno;
    }

    public GradoSeccion getGradoSeccion() {
        return gradoSeccion;
    }

    public void setGradoSeccion(GradoSeccion gradoSeccion) {
        this.gradoSeccion = gradoSeccion;
    }

    public String getDireccion() {
        return direccion;
    }

    public void setDireccion(String direccion) {
        this.direccion = direccion;
    }

    public Date getFechaNacimiento() {
        return fechaNacimiento;
    }

    public void setFechaNacimiento(Date fechaNacimiento) {
        this.fechaNacimiento = fechaNacimiento;
    }

    public Character getSexo() {
        return sexo;
    }

    public void setSexo(Character sexo) {
        this.sexo = sexo;
    }

    public String getCodAlumno() {
        return codAlumno;
    }

    public void setCodAlumno(String codAlumno) {
        this.codAlumno = codAlumno;
    }

    public String getApellido() {
        return apellido;
    }

    public void setApellido(String apellido) {
        this.apellido = apellido;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public Seccion getSeccion() {
        return seccion;
    }

    public void setSeccion(Seccion seccion) {
        this.seccion = seccion;
    }

    public String getCodigo() {
        return codigo;
    }

    public void setCodigo(String codigo) {
        this.codigo = codigo;
    }

    public List<Alumno> getLisAlumno() {
        return lisAlumno;
    }

    public void setLisAlumno(List<Alumno> lisAlumno) {
        this.lisAlumno = lisAlumno;
    }

    public String getMensaje() {
        return mensaje;
    }

    public void setMensaje(String mensaje) {
        this.mensaje = mensaje;
    }

    //Metodos de Mantenimiento (CRUD)
    public void listAlumnoAll() {
        lisAlumno = null;
        AlumnoDB aluDB = new AlumnoDB();
        lisAlumno = aluDB.getAlumnoAll();
    }

    public void listAlumnoById() {
        Integer idAlum = 0;
        try {
            FacesContext facesContext = FacesContext.getCurrentInstance();
            ExternalContext externalContext = facesContext.getExternalContext();

            Map params = externalContext.getRequestParameterMap();
            idAlum = Integer.parseInt(((String) params.get("idFormAlu:idcodAlu")));
        } catch (Exception e) {
            System.out.println("Error al capturar parametro idProf:" + e.getMessage());
        }
        System.out.println("idcodAlum:" + idAlum);

        lisAlumno = null;
        AlumnoDB aluDB = new AlumnoDB();
        lisAlumno = aluDB.getAlumnoById(idAlum);
    }
    
    public void listAlumnoByDNI() {
        String strDni="";
        try {
            FacesContext facesContext = FacesContext.getCurrentInstance();
            ExternalContext externalContext = facesContext.getExternalContext();

            Map params = externalContext.getRequestParameterMap();
            strDni = ((String) params.get("frmReporteNotas:txtCodDniFind"));
            dni=strDni;
        } catch (Exception e) {
            System.out.println("Error al capturar parametro dni:" + e.getMessage());
        }
               
        System.out.println("dni:" + dni);

        lisAlumno = null;
        AlumnoDB aluDB = new AlumnoDB();
        lisAlumno = aluDB.getAlumnoByDNI(this.dni);
    }


    public void agregarAlumno() {
        int result = 0;

        Alumno alu = new Alumno();
        alu.setIdAlumno(idAlumno);
        alu.setDniAlumno(dni);
        alu.setNombres(nombres);
        alu.setApellidoPaterno(apellidoPaterno);
        alu.setApellidoMaterno(apellidoMaterno);
        alu.setDireccion(direccion);
        alu.setFechaNacimiento(fechaNacimiento);
        alu.setSexo(sexo);
        alu.setCodAlumno("" + idAlumno);
        alu.setGradoSeccion(new GradoSeccion(1));
        AlumnoDB aluDB = new AlumnoDB();
        result = aluDB.insertAlumno(alu);
        if (result == 1) {
            mensaje = "* Se guardo correctamente";
        } else {
            mensaje = "* No se guardo correctamente";
        }
    }

    public void updateAlumno() throws HibernateException, Exception {
        Alumno alu = new Alumno();
        AlumnoDB aluDB = new AlumnoDB();
        aluDB.updateAlumno(alu, idAlumno);
    }

    public void deleteAlumno() throws HibernateException, Exception {

        Integer idAlum = 0;
        try {
            FacesContext facesContext = FacesContext.getCurrentInstance();
            ExternalContext externalContext = facesContext.getExternalContext();

            Map params = externalContext.getRequestParameterMap();
            idAlum = Integer.parseInt(((String) params.get("idFormAlu:idcodAlu")));
        } catch (Exception e) {
            System.out.println("Error al capturar parametro idProf:" + e.getMessage());
        }
        System.out.println("idcodAlum:" + idAlum);

        AlumnoDB aluDB = new AlumnoDB();
        List<Alumno> listAlum = aluDB.getAlumnoById(idAlum);
        Alumno alu = null;
        for (Alumno alumno : listAlum) {
            alu = alumno;
        }
        aluDB.deleteAlumno(alu);
    }

    public void pintarFormularioAlumno() {

        System.out.println("codigo rol: " + idAlumno);
        Alumno alu = null;
        List<Alumno> lisAlumno;
        AlumnoDB aluDB = new AlumnoDB();
        lisAlumno = aluDB.getAlumnoById(idAlumno);
        for (Alumno alumno : lisAlumno) {
            alu = alumno;
        }

        idAlumno = (int) alu.getIdAlumno();
        dni = alu.getDniAlumno();
        nombres = alu.getNombres();
        apellidoPaterno = alu.getApellidoPaterno();
        apellidoMaterno = alu.getApellidoMaterno();
        direccion = alu.getDireccion();
        fechaNacimiento = alu.getFechaNacimiento();
        sexo = alu.getSexo();
        System.out.println("sexo: " + alu.getSexo());

    }
}
